]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/src-isv/tasks/class_binding.mediawiki
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / src-isv / tasks / class_binding.mediawiki
diff --git a/bundles/org.simantics.databoard/src-isv/tasks/class_binding.mediawiki b/bundles/org.simantics.databoard/src-isv/tasks/class_binding.mediawiki
new file mode 100644 (file)
index 0000000..ce29594
--- /dev/null
@@ -0,0 +1,98 @@
+=Binding=\r
+Information between databoard's datatype and Java classes are transferred using a ''[javadoc/org/simantics/databoard/binding/Binding.html Binding]''.\r
+The type and hierarchy structure of binding is same as its repsective type and [javadoc/org/simantics/databoard/type/Datatype.html Datatype]. \r
+As datatype has tree-structure, so does a binding. \r
+\r
+{| border="1" cellpadding="3" cellspacing="0" align="center"\r
+| '''#'''||'''Type'''||'''Description'''\r
+|-\r
+| -||[javadoc/org/simantics/databoard/binding/Binding.java|Binding]||Base class for all Bindings\r
+|- \r
+| 0-5||[javadoc/org/simantics/databoard/binding/BooleanBinding.java|BooleanBinding],[javadoc/org/simantics/databoard/binding/ByteBinding.java|ByteBinding],[javadoc/org/simantics/databoard/binding/IntBinding.java|IntBinding],[javadoc/org/simantics/databoard/binding/LongBinding.java|LongBinding],[javadoc/org/simantics/databoard/binding/FloatBinding.java|FloatBinding],[javadoc/org/simantics/databoard/binding/DoubleBinding.java|DoubleBinding]||Primitive and numeric Bindings\r
+|- \r
+| 6||[javadoc/org/simantics/databoard/binding/StringBinding.java|StringBinding]|| String\r
+|- \r
+| 7||[javadoc/org/simantics/databoard/binding/RecordBinding.java|RecordBinding]|| Record \r
+|- \r
+| 8||[javadoc/org/simantics/databoard/binding/ArrayBinding.java|ArrayBinding]|| Array - an ordered sequence of elements of one value.\r
+|- \r
+| 9||[javadoc/org/simantics/databoard/binding/MapBinding.java|MapBinding]|| Map - an ''ordered'' map of keys to values. \r
+|- \r
+| 11||[javadoc/org/simantics/databoard/binding/UnionBinding.java|UnionBinding]|| Union\r
+|- \r
+| 10||[javadoc/org/simantics/databoard/binding/OptionalBinding.java|OptionalBinding]|| Optional value\r
+|- \r
+| 12||[javadoc/org/simantics/databoard/binding/VariantBinding.java|VariantBinding]|| Variant value\r
+|}\r
+\r
+==Built-in Bindings=\r
+\r
+==Class Binding==\r
+To acquire a binding, the developer can use a utility that creates one using Java reflection functions. \r
+    Binding binding = Bindings.getBinding( Double.class );\r
+\r
+The Binding implementation is based on reflection or constructed from byte-code at runtime. Reflection is used if ASM library is not available. \r
+\r
+An automatic mechanism can create binding out of Java class, provided that certain rules are followed.\r
+\r
+''Record-like class:''\r
+    class Foo {\r
+        public String name;\r
+        public Object value;\r
+    }\r
+\r
+''Immutable class:''\r
+    class Foo {\r
+        private String name;\r
+        private Object value;\r
+        \r
+        public Foo(String name, Object value) {\r
+            this.name = name;\r
+            this.value = value;\r
+        }\r
+        \r
+        public String getName() {\r
+            return name;\r
+        }\r
+        \r
+        public Object getValue() {\r
+            return value;\r
+        }\r
+        \r
+    }\r
+\r
+''Bean-like classes:''\r
+    class Foo {\r
+        private String name;\r
+        private Object value;\r
+        \r
+        public void setName(String name) {\r
+            this.name = name;\r
+        }\r
+        \r
+        public void setValue(Object value) {\r
+            this.value = value;\r
+        }\r
+        \r
+        public String getName() {\r
+            return name;\r
+        }\r
+        \r
+        public Object getValue() {\r
+            return value;\r
+        }\r
+        \r
+    }\r
+\r
+===Annotations===\r
+You can aid the Binding creation with annotations.\r
+\r
+ such as @Recursive, @Optional, @Arguments.\r
+\r
+{| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; "\r
+| '''Class''' \r
+|-\r
+|}\r
+\r
+\r
+==Hand-Written Binding==
\ No newline at end of file