Skip to content

Commit fa302fa

Browse files
committed
improve datanode conversion
1 parent 7df3c04 commit fa302fa

3 files changed

Lines changed: 13 additions & 14 deletions

File tree

src/main/java/org/comroid/api/data/seri/DataNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ else if (this instanceof Object)
140140
return properties().collect(JSON.Object::new, (n, e) -> n.put(e.key, e.getValue().json()), Map::putAll);
141141
else if (this instanceof Array)
142142
return properties().collect(JSON.Array::new, (n, e) -> n.add(e.getValue().json()), List::addAll);
143-
else if (this instanceof Value)
144-
return Convertible.convert(this, JSON.Value.class);
143+
else if (this instanceof Value<?> value)
144+
return JSON.Value.convert(value);
145145
else return of(this).json();
146146
}
147147

src/main/java/org/comroid/api/data/seri/adp/JSON.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.io.StringReader;
2020
import java.util.List;
2121
import java.util.Map;
22-
import java.util.Objects;
2322
import java.util.stream.Collectors;
2423

2524
public enum JSON implements Serializer<JSON.Node> {
@@ -193,9 +192,9 @@ public static JSON.Object of(Map<String, java.lang.Object> map) {
193192
}
194193

195194
@Override
196-
public String toString() {
195+
public String toSerializedString() {
197196
return map.entrySet().stream()
198-
.map(e -> "\"%s\": %s".formatted(e.getKey(), e.getValue().toString()))
197+
.map(e -> "\"%s\": %s".formatted(e.getKey(), e.getValue().toSerializedString()))
199198
.collect(Collectors.joining(", ", "{", "}"));
200199
}
201200
}
@@ -210,9 +209,9 @@ public static JSON.Array of(List<java.lang.Object> list) {
210209
}
211210

212211
@Override
213-
public String toString() {
212+
public String toSerializedString() {
214213
return list.stream()
215-
.map(Objects::toString)
214+
.map(DataNode::toSerializedString)
216215
.collect(Collectors.joining(", ", "[", "]"));
217216
}
218217
}
@@ -231,9 +230,9 @@ public Value(@Nullable T value) {
231230
}
232231

233232
@Override
234-
public String toString() {
233+
public @NotNull String toSerializedString() {
235234
// this method is a super-stub because it depends on the functionality of the underlying method
236-
return super.toString();
235+
return super.toSerializedString();
237236
}
238237
}
239238
}

src/main/java/org/comroid/api/func/ext/Convertible.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import org.comroid.annotations.Convert;
44
import org.comroid.annotations.internal.Annotations;
55
import org.comroid.api.func.util.Invocable;
6-
import org.comroid.api.info.Constraint;
76
import org.jetbrains.annotations.ApiStatus.Experimental;
7+
import org.jetbrains.annotations.Contract;
88
import org.jetbrains.annotations.NotNull;
99

1010
import java.lang.reflect.Modifier;
@@ -16,12 +16,12 @@
1616
public interface Convertible {
1717
@Experimental
1818
@SuppressWarnings("unchecked")
19-
static <R> @NotNull R convert(Object it_, Class<? super R> target) {
19+
@Contract("null, !null -> null; !null, !null -> _; !null, null -> fail")
20+
static <R> R convert(Object it_, Class<? super R> target) {
2021
var it = it_ instanceof Supplier && Annotations.ignore(it_.getClass(), Convertible.class).isEmpty()
2122
? ((Supplier<?>) it_).get() : it_;
22-
Constraint.notNull(it, "source object")
23-
.setHint("check implementation")
24-
.run();
23+
if (it == null)
24+
return null;
2525
if (target.isInstance(it))
2626
return (R) target.cast(it);
2727
return Stream.concat(Stream.of(target.getConstructors()),

0 commit comments

Comments
 (0)