- }\r
-\r
- @Override\r
- public void readFrom(Binding srcBinding, Object src, Object dst)\r
- throws BindingException {\r
- \r
- try {\r
- \r
- // Src Binding\r
- ArrayBinding sb = (ArrayBinding) srcBinding;\r
- // Src Component Binding\r
- Binding scb = sb.getComponentBinding();\r
- \r
- // Dst Component Binding\r
- Binding dcb = getComponentBinding();\r
- \r
- int newLen = sb.size(src);\r
- int oldLen = size(dst);\r
- boolean cbImmutable = dcb.isImmutable();\r
- Adapter cloner = cbImmutable ? Bindings.adapterFactory.getAdapter(scb, dcb, false, true) : null;\r
- \r
- // Set elements\r
- for (int i=0; i<newLen; i++) {\r
- if (cbImmutable) {\r
- // Create new instance\r
- Object sc = sb.get(src, i);\r
- Object dc = cloner.adapt(sc);\r
- if (i<oldLen) set(dst, i, dc); else add(dst, dc); \r
- } else \r
- if (i<oldLen) {\r
- // Read over old instance\r
- Object dc = get(dst, i);\r
- Object sc = sb.get(src, i);\r
- dc = dcb.readFromTry(scb, sc, dc);\r
- // Safety-writeback - clone/reference nature of get is unknown\r
- set(dst, i, dc);\r
- } else {\r
- // New instance\r
- Object sc = sb.get(src, i);\r
- Object dc = dcb.createDefault();\r
- dc = dcb.readFromTry(scb, sc, dc);\r
- add(dst, dc);\r
- }\r
- }\r
- \r
- // Remove excess elements\r
- if (oldLen>newLen) {\r
- setSize(dst, newLen);\r
- }\r
- \r
- if (!Bindings.equals(srcBinding, src, this, dst))\r
- throw new BindingException("internal error");\r
-\r
- } catch (AdaptException e) {\r
- throw new BindingException(e);\r
- } catch (AdapterConstructionException e) {\r
- throw new BindingException(e);\r
- }\r
- \r
- } \r
-\r
+ }
+
+ @Override
+ public void readFrom(Binding srcBinding, Object src, Object dst)
+ throws BindingException {
+
+ try {
+
+ // Src Binding
+ ArrayBinding sb = (ArrayBinding) srcBinding;
+ // Src Component Binding
+ Binding scb = sb.getComponentBinding();
+
+ // Dst Component Binding
+ Binding dcb = getComponentBinding();
+
+ int newLen = sb.size(src);
+ int oldLen = size(dst);
+ boolean cbImmutable = dcb.isImmutable();
+ Adapter cloner = cbImmutable ? Bindings.adapterFactory.getAdapter(scb, dcb, false, true) : null;
+
+ // Set elements
+ for (int i=0; i<newLen; i++) {
+ if (cbImmutable) {
+ // Create new instance
+ Object sc = sb.get(src, i);
+ Object dc = cloner.adapt(sc);
+ if (i<oldLen) set(dst, i, dc); else add(dst, dc);
+ } else
+ if (i<oldLen) {
+ // Read over old instance
+ Object dc = get(dst, i);
+ Object sc = sb.get(src, i);
+ dc = dcb.readFromTry(scb, sc, dc);
+ // Safety-writeback - clone/reference nature of get is unknown
+ set(dst, i, dc);
+ } else {
+ // New instance
+ Object sc = sb.get(src, i);
+ Object dc = dcb.createDefault();
+ dc = dcb.readFromTry(scb, sc, dc);
+ add(dst, dc);
+ }
+ }
+
+ // Remove excess elements
+ if (oldLen>newLen) {
+ setSize(dst, newLen);
+ }
+
+ if (!Bindings.equals(srcBinding, src, this, dst))
+ throw new BindingException("internal error");
+
+ } catch (AdaptException e) {
+ throw new BindingException(e);
+ } catch (AdapterConstructionException e) {
+ throw new BindingException(e);
+ }
+
+ }
+