Start splitting Content in more abstract interfaces
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 10 Mar 2024 11:28:39 +0000 (12:28 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 10 Mar 2024 11:28:39 +0000 (12:28 +0100)
org.argeo.api.acr/src/org/argeo/api/acr/Content.java
org.argeo.api.acr/src/org/argeo/api/acr/QualifiedData.java [new file with mode: 0644]
org.argeo.api.acr/src/org/argeo/api/acr/StructuredData.java [new file with mode: 0644]

index 7ec29594713e885d8f39a2efa00c0a24b186f7f3..d6af2fe3de301e044f3f95e468b853d31a89c6a0 100644 (file)
@@ -13,9 +13,10 @@ import java.util.concurrent.CompletableFuture;
 import javax.xml.namespace.QName;
 
 /**
- * A semi-structured content, with attributes, within a hierarchical structure.
+ * A semi-structured content, with attributes, within a hierarchical structure
+ * whose nodes are named.
  */
-public interface Content extends Iterable<Content>, Map<QName, Object> {
+public interface Content extends QualifiedData<Content> {
        /** The base of a repository path. */
        String ROOT_PATH = "/";
 
diff --git a/org.argeo.api.acr/src/org/argeo/api/acr/QualifiedData.java b/org.argeo.api.acr/src/org/argeo/api/acr/QualifiedData.java
new file mode 100644 (file)
index 0000000..89ab665
--- /dev/null
@@ -0,0 +1,8 @@
+package org.argeo.api.acr;
+
+import javax.xml.namespace.QName;
+
+/** A {@link StructuredData} whose attributes have qualified keys. */
+public interface QualifiedData<CHILD extends QualifiedData<CHILD>> extends StructuredData<QName, Object, CHILD> {
+
+}
diff --git a/org.argeo.api.acr/src/org/argeo/api/acr/StructuredData.java b/org.argeo.api.acr/src/org/argeo/api/acr/StructuredData.java
new file mode 100644 (file)
index 0000000..4e38cf6
--- /dev/null
@@ -0,0 +1,8 @@
+package org.argeo.api.acr;
+
+import java.util.Map;
+
+/** A hierarchical structure of unnamed mappings. */
+public interface StructuredData<KEY, VALUE, CHILD> extends Map<KEY, VALUE>, Iterable<CHILD> {
+
+}