First draft of GCR API
[lgpl/argeo-commons.git] / org.argeo.api / src / org / argeo / api / gcr / AbstractContent.java
diff --git a/org.argeo.api/src/org/argeo/api/gcr/AbstractContent.java b/org.argeo.api/src/org/argeo/api/gcr/AbstractContent.java
new file mode 100644 (file)
index 0000000..a54ff1e
--- /dev/null
@@ -0,0 +1,38 @@
+package org.argeo.api.gcr;
+
+import java.util.AbstractMap;
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class AbstractContent extends AbstractMap<String, Object> implements Content {
+
+       @Override
+       public Set<Entry<String, Object>> entrySet() {
+               Set<Entry<String, Object>> result = new HashSet<>();
+               for (String key : keys()) {
+                       Entry<String, Object> entry = new Entry<String, Object>() {
+
+                               @Override
+                               public String getKey() {
+                                       return key;
+                               }
+
+                               @Override
+                               public Object getValue() {
+                                       // TODO check type
+                                       return attr(key);
+                               }
+
+                               @Override
+                               public Object setValue(Object value) {
+                                       throw new UnsupportedOperationException();
+                               }
+
+                       };
+                       result.add(entry);
+               }
+               return result;
+       }
+
+       protected abstract Iterable<String> keys();
+}