json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java
branchDeepWatch
changeset 788 f8ac4d547ad3
parent 787 a0e8f185c0d4
child 790 30f20d9c0986
     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");