--- /dev/null
+package org.simantics.databoard.binding.factory;\r
+\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.binding.RecordBinding;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.type.RecordType;\r
+\r
+/**\r
+ * Binds RecordType to Object[]\r
+ *\r
+ * @author Toni Kalajainen <toni.kalajainen@vtt.fi>\r
+ */\r
+class RecordObjectArrayBinding extends RecordBinding {\r
+\r
+ public RecordObjectArrayBinding(RecordType type, Binding[] componentBindings)\r
+ {\r
+ this.componentBindings = componentBindings;\r
+ if (type==null) throw new IllegalArgumentException("null arg");\r
+ this.type = type;\r
+ }\r
+ \r
+ @Override\r
+ public Object create(Object... value) { \r
+ return value;\r
+ }\r
+ \r
+ @Override\r
+ public Object createPartial() {\r
+ return new Object[getComponentCount()];\r
+ }\r
+ \r
+ @Override\r
+ public Object getComponent(Object obj, int index) {\r
+ return ((Object[])obj)[index];\r
+ }\r
+\r
+ @Override\r
+ public void setComponents(Object obj, Object... value) throws BindingException {\r
+ System.arraycopy(value, 0, obj, 0, value.length);\r
+ }\r
+ \r
+ @Override\r
+ public void setComponent(Object obj, int index, Object value)\r
+ throws BindingException {\r
+ Object[] array = (Object[]) obj;\r
+ array[index] = value;\r
+ }\r
+\r
+ @Override\r
+ public boolean isInstance(Object obj) {\r
+ return (obj instanceof Object[]) && (((Object[])obj).length == componentBindings.length);\r
+ }\r
+ \r
+}
\ No newline at end of file