1.1 --- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sat Aug 02 07:28:37 2014 +0200
1.2 +++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sat Aug 02 07:54:15 2014 +0200
1.3 @@ -658,14 +658,24 @@
1.4 }
1.5 w.write(" " + gs[0] + "() {\n");
1.6 int arg = 0;
1.7 + boolean deep = false;
1.8 for (VariableElement pe : ee.getParameters()) {
1.9 final String dn = pe.getSimpleName().toString();
1.10
1.11 if (!verifyPropName(pe, dn, fixedProps)) {
1.12 ok = false;
1.13 }
1.14 -
1.15 - final String dt = fqn(pe.asType(), ee);
1.16 + final TypeMirror pt = pe.asType();
1.17 + if (isModel(pt)) {
1.18 + deep = true;
1.19 + }
1.20 + final String dt = fqn(pt, ee);
1.21 + if (dt.startsWith("java.util.List") && pt instanceof DeclaredType) {
1.22 + final List<? extends TypeMirror> ptArgs = ((DeclaredType)pt).getTypeArguments();
1.23 + if (ptArgs.size() == 1 && isModel(ptArgs.get(0))) {
1.24 + deep = true;
1.25 + }
1.26 + }
1.27 String[] call = toGetSet(dn, dt, false);
1.28 w.write(" " + dt + " arg" + (++arg) + " = ");
1.29 w.write(call[0] + "();\n");
1.30 @@ -678,7 +688,10 @@
1.31 depends.add(new String[] { sn, gs[0] });
1.32 }
1.33 w.write(" try {\n");
1.34 - if (tp != null && tp.deep()) {
1.35 + if (tp != null) {
1.36 + deep = tp.deep();
1.37 + }
1.38 + if (deep) {
1.39 w.write(" proto.acquireLock(\"" + sn + "\");\n");
1.40 } else {
1.41 w.write(" proto.acquireLock();\n");