From 356a8b4272897c542c20ce7b76b15f014faf2883 Mon Sep 17 00:00:00 2001 From: aromaa Date: Tue, 26 May 2026 22:54:42 +0300 Subject: [PATCH 1/2] Add String based value querying and setting to DataView --- .../api/data/persistence/DataContainer.java | 5 +++++ .../api/data/persistence/DataView.java | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/org/spongepowered/api/data/persistence/DataContainer.java b/src/main/java/org/spongepowered/api/data/persistence/DataContainer.java index 4af51b13c0..cef0216c28 100644 --- a/src/main/java/org/spongepowered/api/data/persistence/DataContainer.java +++ b/src/main/java/org/spongepowered/api/data/persistence/DataContainer.java @@ -58,6 +58,11 @@ static DataContainer createNew(SafetyMode safety) { @Override DataContainer set(DataQuery path, Object value); + @Override + default DataContainer set(String key, Object value) { + return this.set(DataQuery.of(key), value); + } + @Override DataContainer remove(DataQuery path); } diff --git a/src/main/java/org/spongepowered/api/data/persistence/DataView.java b/src/main/java/org/spongepowered/api/data/persistence/DataView.java index 41cc61e03a..a68fefef56 100644 --- a/src/main/java/org/spongepowered/api/data/persistence/DataView.java +++ b/src/main/java/org/spongepowered/api/data/persistence/DataView.java @@ -38,6 +38,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.stream.Stream; /** * Represents an object of data represented by a map. @@ -121,6 +122,15 @@ public interface DataView { */ Map values(boolean deep); + /** + * Gets a Stream containing all root keys and their values for this {@link DataView}. + * + * @return Stream of root keys and values of this container + */ + default Stream> streamRootValues() { + return this.values(false).entrySet().stream().map(entry -> Map.entry(entry.getKey().parts().getFirst(), entry.getValue())); + } + /** * Returns whether this {@link DataView} contains the given path. * @@ -158,6 +168,17 @@ public interface DataView { */ DataView set(DataQuery path, Object value); + /** + * Sets the given Object value to this {@link DataView}'s key. + * + * @param key The key of the object to set + * @param value The value of the data + * @return This view, for chaining + */ + default DataView set(String key, Object value) { + return this.set(DataQuery.of(key), value); + } + /** * Removes the data associated to the given path relative to this * {@link DataView}'s path. From 5f1eb3cb87df96132e2e5283d7b782d61fb68240 Mon Sep 17 00:00:00 2001 From: aromaa Date: Wed, 27 May 2026 00:40:14 +0300 Subject: [PATCH 2/2] Add DataView#streamRootKeys --- .../org/spongepowered/api/data/persistence/DataView.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/spongepowered/api/data/persistence/DataView.java b/src/main/java/org/spongepowered/api/data/persistence/DataView.java index a68fefef56..7632b9bff5 100644 --- a/src/main/java/org/spongepowered/api/data/persistence/DataView.java +++ b/src/main/java/org/spongepowered/api/data/persistence/DataView.java @@ -107,6 +107,15 @@ public interface DataView { */ Set keys(boolean deep); + /** + * Gets a Stream containing all root keys for this {@link DataView}. + * + * @return Stream of root keys of this container + */ + default Stream streamRootKeys() { + return this.keys(false).stream().map(k -> k.parts().getFirst()); + } + /** * Gets a Map containing all keys and their values for this {@link DataView}. *