View Javadoc
1   // Generated by delombok at Fri Nov 29 09:48:08 UTC 2024
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   * Implementation of {@link JsonDomValue} for JSON Processing (aka
19   * <a href="https://jcp.org/en/jsr/detail?id=374">JSR-374</a>) and its
20   * {@link JsonValue}.
21   */
22  public class JakartaJsonProcessingDomValue implements JsonDomValue<JsonValue> {
23  	/**
24  	 * Wrapped JSON element
25  	 */
26  	private final JsonValue jsonElement;
27  
28  	/**
29  	 * {@inheritDoc}
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  	 * {@inheritDoc}
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  	 * {@inheritDoc}
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  	 * {@inheritDoc}
87  	 */
88  	@NonNull
89  	@Override
90  	public String toString() {
91  		return getJsonElement().toString();
92  	}
93  
94  	/**
95  	 * Wrapped JSON element
96  	 *
97  	 * @return wrapped JSON element
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 }