-\r
- @Override\r
- public void readFrom(Binding srcBinding, Object src, Object dst)\r
- throws BindingException {\r
- // Src Binding\r
- ArrayBinding sb = (ArrayBinding) srcBinding;\r
- // Src Component Binding\r
- Binding scb = sb.getComponentBinding();\r
- // Dst component binding\r
- Binding dcb = getComponentBinding();\r
- // Dst array\r
- Object[] d = (Object[]) dst;\r
- if (d.length != sb.size(src)) throw new BindingException("Object[] is length immutable");\r
- \r
- for (int i=0; i<d.length; i++) {\r
- Object sc = sb.get(src, i);\r
- Object dc = d[i];\r
- d[i] = dcb.readFromTry(scb, sc, dc);\r
- }\r
- } \r
- \r
- @Override\r
- public Object readFromTry(Binding srcBinding, Object src, Object dst) throws BindingException {\r
- // Src Binding\r
- ArrayBinding sb = (ArrayBinding) srcBinding;\r
- // Src Component Binding\r
- Binding scb = sb.getComponentBinding();\r
- // Dst component binding\r
- Binding dcb = getComponentBinding();\r
- // Dst array\r
- Object[] d = (Object[]) dst;\r
- int srcSize = sb.size(src);\r
- if (d.length != srcSize) {\r
- Object[] oldD = (Object[]) dst;\r
- d = new Object[ srcSize ];\r
- int X = Math.min(oldD.length, srcSize);\r
- for (int i=0; i<X; i++) {\r
- Object sc = sb.get(src, i);\r
- Object dc = d[i];\r
- d[i] = dcb.readFromTry(scb, sc, dc);\r
- }\r
- if (X<srcSize) {\r
- try {\r
- Adapter cloner = Bindings.adapterFactory.getAdapter(scb, dcb, false, true);\r
- for (int i=X; i<srcSize; i++) {\r
- Object sc = sb.get(src, i);\r
- Object dc = cloner.adapt( sc );\r
- d[i] = dc;\r
- }\r
- } catch (AdaptException e) {\r
- throw new BindingException( e );\r
- } catch (AdapterConstructionException e) {\r
- throw new BindingException( e );\r
- }\r
- }\r
- } else {\r
- for (int i=0; i<d.length; i++) {\r
- Object sc = sb.get(src, i);\r
- Object dc = d[i];\r
- d[i] = dcb.readFromTry(scb, sc, dc); \r
- }\r
- }\r
- return d;\r
- } \r
- \r
+
+ @Override
+ public void readFrom(Binding srcBinding, Object src, Object dst)
+ throws BindingException {
+ // Src Binding
+ ArrayBinding sb = (ArrayBinding) srcBinding;
+ // Src Component Binding
+ Binding scb = sb.getComponentBinding();
+ // Dst component binding
+ Binding dcb = getComponentBinding();
+ // Dst array
+ Object[] d = (Object[]) dst;
+ if (d.length != sb.size(src)) throw new BindingException("Object[] is length immutable");
+
+ for (int i=0; i<d.length; i++) {
+ Object sc = sb.get(src, i);
+ Object dc = d[i];
+ d[i] = dcb.readFromTry(scb, sc, dc);
+ }
+ }
+
+ @Override
+ public Object readFromTry(Binding srcBinding, Object src, Object dst) throws BindingException {
+ // Src Binding
+ ArrayBinding sb = (ArrayBinding) srcBinding;
+ // Src Component Binding
+ Binding scb = sb.getComponentBinding();
+ // Dst component binding
+ Binding dcb = getComponentBinding();
+ // Dst array
+ Object[] d = (Object[]) dst;
+ int srcSize = sb.size(src);
+ if (d.length != srcSize) {
+ Object[] oldD = (Object[]) dst;
+ d = new Object[ srcSize ];
+ int X = Math.min(oldD.length, srcSize);
+ for (int i=0; i<X; i++) {
+ Object sc = sb.get(src, i);
+ Object dc = d[i];
+ d[i] = dcb.readFromTry(scb, sc, dc);
+ }
+ if (X<srcSize) {
+ try {
+ Adapter cloner = Bindings.adapterFactory.getAdapter(scb, dcb, false, true);
+ for (int i=X; i<srcSize; i++) {
+ Object sc = sb.get(src, i);
+ Object dc = cloner.adapt( sc );
+ d[i] = dc;
+ }
+ } catch (AdaptException e) {
+ throw new BindingException( e );
+ } catch (AdapterConstructionException e) {
+ throw new BindingException( e );
+ }
+ }
+ } else {
+ for (int i=0; i<d.length; i++) {
+ Object sc = sb.get(src, i);
+ Object dc = d[i];
+ d[i] = dcb.readFromTry(scb, sc, dc);
+ }
+ }
+ return d;
+ }
+