]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 =Binding=\r
2 Information between databoard's datatype and Java classes are transferred using a ''[javadoc/org/simantics/databoard/binding/Binding.html Binding]''.\r
3 The type and hierarchy structure of binding is same as its repsective type and [javadoc/org/simantics/databoard/type/Datatype.html Datatype]. \r
4 As datatype has tree-structure, so does a binding. \r
5 \r
6 {| border="1" cellpadding="3" cellspacing="0" align="center"\r
7 | '''#'''||'''Type'''||'''Description'''\r
8 |-\r
9 | -||[javadoc/org/simantics/databoard/binding/Binding.java|Binding]||Base class for all Bindings\r
10 |- \r
11 | 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
12 |- \r
13 | 6||[javadoc/org/simantics/databoard/binding/StringBinding.java|StringBinding]|| String\r
14 |- \r
15 | 7||[javadoc/org/simantics/databoard/binding/RecordBinding.java|RecordBinding]|| Record \r
16 |- \r
17 | 8||[javadoc/org/simantics/databoard/binding/ArrayBinding.java|ArrayBinding]|| Array - an ordered sequence of elements of one value.\r
18 |- \r
19 | 9||[javadoc/org/simantics/databoard/binding/MapBinding.java|MapBinding]|| Map - an ''ordered'' map of keys to values. \r
20 |- \r
21 | 11||[javadoc/org/simantics/databoard/binding/UnionBinding.java|UnionBinding]|| Union\r
22 |- \r
23 | 10||[javadoc/org/simantics/databoard/binding/OptionalBinding.java|OptionalBinding]|| Optional value\r
24 |- \r
25 | 12||[javadoc/org/simantics/databoard/binding/VariantBinding.java|VariantBinding]|| Variant value\r
26 |}\r
27 \r
28 ==Built-in Bindings=\r
29 \r
30 ==Class Binding==\r
31 To acquire a binding, the developer can use a utility that creates one using Java reflection functions. \r
32     Binding binding = Bindings.getBinding( Double.class );\r
33 \r
34 The Binding implementation is based on reflection or constructed from byte-code at runtime. Reflection is used if ASM library is not available. \r
35 \r
36 An automatic mechanism can create binding out of Java class, provided that certain rules are followed.\r
37 \r
38 ''Record-like class:''\r
39     class Foo {\r
40         public String name;\r
41         public Object value;\r
42     }\r
43 \r
44 ''Immutable class:''\r
45     class Foo {\r
46         private String name;\r
47         private Object value;\r
48         \r
49         public Foo(String name, Object value) {\r
50             this.name = name;\r
51             this.value = value;\r
52         }\r
53         \r
54         public String getName() {\r
55             return name;\r
56         }\r
57         \r
58         public Object getValue() {\r
59             return value;\r
60         }\r
61         \r
62     }\r
63 \r
64 ''Bean-like classes:''\r
65     class Foo {\r
66         private String name;\r
67         private Object value;\r
68         \r
69         public void setName(String name) {\r
70             this.name = name;\r
71         }\r
72         \r
73         public void setValue(Object value) {\r
74             this.value = value;\r
75         }\r
76         \r
77         public String getName() {\r
78             return name;\r
79         }\r
80         \r
81         public Object getValue() {\r
82             return value;\r
83         }\r
84         \r
85     }\r
86 \r
87 ===Annotations===\r
88 You can aid the Binding creation with annotations.\r
89 \r
90  such as @Recursive, @Optional, @Arguments.\r
91 \r
92 {| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; "\r
93 | '''Class''' \r
94 |-\r
95 |}\r
96 \r
97 \r
98 ==Hand-Written Binding==