From c1802f2e7af7c7aaf9b2b81fc089853682508a5b Mon Sep 17 00:00:00 2001 From: "Tobias Burdow [Kaleidox]" Date: Mon, 25 Dec 2023 05:23:23 +0100 Subject: [PATCH] use aliases for properties --- src/main/java/org/comroid/api/DataStructure.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/comroid/api/DataStructure.java b/src/main/java/org/comroid/api/DataStructure.java index d31ada82..9e67b271 100644 --- a/src/main/java/org/comroid/api/DataStructure.java +++ b/src/main/java/org/comroid/api/DataStructure.java @@ -8,6 +8,7 @@ import org.comroid.util.Constraint; import org.comroid.util.StandardValueType; import org.comroid.util.Switch; +import org.comroid.util.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -16,7 +17,9 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; +import static org.comroid.annotations.Annotations.aliases; import static org.comroid.api.Polyfill.uncheckedCast; +import static org.comroid.util.Streams.append; @Value @AllArgsConstructor(access = AccessLevel.PRIVATE) @@ -106,7 +109,7 @@ else if (it instanceof Method) .filter(it -> !Annotations.ignore(it, DataStructure.class)) .filter(it -> !key.above.equals(it.getDeclaringClass()) && key.above.isAssignableFrom(it.getDeclaringClass())) .filter(it -> Arrays.stream(SystemFilters).noneMatch(type -> it.getDeclaringClass().isAssignableFrom(type))) - .map(it -> { + .forEach(it -> { var type = new Switch>() .option(Field.class::isInstance, () -> ((Field) it).getType()) .option(Method.class::isInstance, () -> ((Method) it).getReturnType()) @@ -114,9 +117,10 @@ else if (it instanceof Method) var name = it.getName(); if (it instanceof Method) name = Character.toLowerCase(name.charAt(3)) + name.substring("getX".length()); - return struct.createProperty(type, name, it); - }) - .forEach(prop -> struct.properties.put(prop.name, prop)); + final var prop = struct.createProperty(type, name, it); + Stream.of(name).collect(append(aliases(it))) + .forEach(alias -> struct.properties.put(alias, prop)); + }); return struct; }