1
2 package de.larssh.json.dom.values;
3
4 import java.util.Collections;
5 import org.w3c.dom.DOMException;
6 import de.larssh.json.dom.JsonDomType;
7 import de.larssh.json.dom.children.JsonDomArrayChildren;
8 import de.larssh.json.dom.children.JsonDomChildren;
9 import de.larssh.json.dom.children.JsonDomObjectChildren;
10 import edu.umd.cs.findbugs.annotations.NonNull;
11 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
12 import jakarta.json.JsonArray;
13 import jakarta.json.JsonString;
14 import jakarta.json.JsonValue;
15 import jakarta.json.JsonValue.ValueType;
16
17
18
19
20
21
22 public class JakartaJsonProcessingDomValue implements JsonDomValue<JsonValue> {
23
24
25
26 private final JsonValue jsonElement;
27
28
29
30
31 @NonNull
32 @Override
33 public JsonDomChildren<JakartaJsonProcessingDomValue> getChildren() {
34 final JsonValue value = getJsonElement();
35 final ValueType valueType = value.getValueType();
36 if (valueType == ValueType.ARRAY) {
37 final JsonArray array = value.asJsonArray();
38 return new JsonDomArrayChildren<>(array.size(), array, JakartaJsonProcessingDomValue::new);
39 }
40 if (valueType == ValueType.OBJECT) {
41 return new JsonDomObjectChildren<>(value.asJsonObject(), JakartaJsonProcessingDomValue::new);
42 }
43 return Collections::emptySet;
44 }
45
46
47
48
49 @NonNull
50 @Override
51 public String getTextValue() {
52 final JsonValue value = getJsonElement();
53 return value.getValueType() == ValueType.STRING ? ((JsonString) value).getString() : value.toString();
54 }
55
56
57
58
59 @NonNull
60 @Override
61 @SuppressFBWarnings(value = "WEM_WEAK_EXCEPTION_MESSAGING", justification = "there is no more information about valueType")
62 public JsonDomType getType() {
63 final ValueType valueType = getJsonElement().getValueType();
64 if (valueType == ValueType.ARRAY) {
65 return JsonDomType.ARRAY;
66 }
67 if (valueType == ValueType.FALSE || valueType == ValueType.TRUE) {
68 return JsonDomType.BOOLEAN;
69 }
70 if (valueType == ValueType.NULL) {
71 return JsonDomType.NULL;
72 }
73 if (valueType == ValueType.NUMBER) {
74 return JsonDomType.NUMBER;
75 }
76 if (valueType == ValueType.OBJECT) {
77 return JsonDomType.OBJECT;
78 }
79 if (valueType == ValueType.STRING) {
80 return JsonDomType.STRING;
81 }
82 throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Unknown JSON node type.");
83 }
84
85
86
87
88 @NonNull
89 @Override
90 public String toString() {
91 return getJsonElement().toString();
92 }
93
94
95
96
97
98
99 @java.lang.SuppressWarnings("all")
100 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
101 @lombok.Generated
102 public JsonValue getJsonElement() {
103 return this.jsonElement;
104 }
105
106 @java.lang.SuppressWarnings("all")
107 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
108 @lombok.Generated
109 public JakartaJsonProcessingDomValue(final JsonValue jsonElement) {
110 this.jsonElement = jsonElement;
111 }
112
113 @java.lang.Override
114 @java.lang.SuppressWarnings("all")
115 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
116 @lombok.Generated
117 public boolean equals(@edu.umd.cs.findbugs.annotations.Nullable final java.lang.Object o) {
118 if (o == this) return true;
119 if (!(o instanceof JakartaJsonProcessingDomValue)) return false;
120 final JakartaJsonProcessingDomValue other = (JakartaJsonProcessingDomValue) o;
121 if (!other.canEqual((java.lang.Object) this)) return false;
122 final java.lang.Object this$jsonElement = this.getJsonElement();
123 final java.lang.Object other$jsonElement = other.getJsonElement();
124 if (this$jsonElement == null ? other$jsonElement != null : !this$jsonElement.equals(other$jsonElement)) return false;
125 return true;
126 }
127
128 @java.lang.SuppressWarnings("all")
129 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
130 @lombok.Generated
131 protected boolean canEqual(@edu.umd.cs.findbugs.annotations.Nullable final java.lang.Object other) {
132 return other instanceof JakartaJsonProcessingDomValue;
133 }
134
135 @java.lang.Override
136 @java.lang.SuppressWarnings("all")
137 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings(justification = "generated code")
138 @lombok.Generated
139 public int hashCode() {
140 final int PRIME = 59;
141 int result = 1;
142 final java.lang.Object $jsonElement = this.getJsonElement();
143 result = result * PRIME + ($jsonElement == null ? 43 : $jsonElement.hashCode());
144 return result;
145 }
146 }