javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
branchmodel
changeset 500 f9e80d48e9b4
parent 498 607f062485cc
child 505 4198be34b516
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Jan 21 07:00:56 2013 +0100
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Mon Jan 21 11:55:27 2013 +0100
     1.3 @@ -95,6 +95,7 @@
     1.4                      w.append("package " + pkg + ";\n");
     1.5                      w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n");
     1.6                      w.append("class ").append(className).append(" {\n");
     1.7 +                    w.append("  private static boolean locked;\n");
     1.8                      w.append("  private ").append(className).append("() {}\n");
     1.9                      for (String id : pp.ids()) {
    1.10                          String tag = pp.tagNameForId(id);
    1.11 @@ -272,9 +273,11 @@
    1.12  
    1.13              w.write("private static " + tn + " prop_" + p.name() + ";\n");
    1.14              w.write("public static " + tn + " " + gs[0] + "() {\n");
    1.15 +            w.write("  if (locked) throw new IllegalStateException();\n");
    1.16              w.write("  return prop_" + p.name() + ";\n");
    1.17              w.write("}\n");
    1.18              w.write("public static void " + gs[1] + "(" + tn + " v) {\n");
    1.19 +            w.write("  if (locked) throw new IllegalStateException();\n");
    1.20              w.write("  prop_" + p.name() + " = v;\n");
    1.21              w.write("  if (ko != null) {\n");
    1.22              w.write("    ko.valueHasMutated(\"" + p.name() + "\");\n");
    1.23 @@ -310,14 +313,14 @@
    1.24              String[] gs = toGetSet(sn, tn);
    1.25              
    1.26              w.write("public static " + tn + " " + gs[0] + "() {\n");
    1.27 -            w.write("  return " + e.getEnclosingElement().getSimpleName() + '.' + e.getSimpleName() + "(");
    1.28 -            String sep = "";
    1.29 +            w.write("  if (locked) throw new IllegalStateException();\n");
    1.30 +            int arg = 0;
    1.31              for (VariableElement pe : ee.getParameters()) {
    1.32                  final String dn = pe.getSimpleName().toString();
    1.33 -                String[] call = toGetSet(dn, pe.asType().toString());
    1.34 -                w.write(sep);
    1.35 -                w.write(call[0] + "()");
    1.36 -                sep = ", ";
    1.37 +                final String dt = pe.asType().toString();
    1.38 +                String[] call = toGetSet(dn, dt);
    1.39 +                w.write("  " + dt + " arg" + (++arg) + " = ");
    1.40 +                w.write(call[0] + "();\n");
    1.41                  
    1.42                  Collection<String> depends = deps.get(dn);
    1.43                  if (depends == null) {
    1.44 @@ -326,7 +329,19 @@
    1.45                  }
    1.46                  depends.add(sn);
    1.47              }
    1.48 +            w.write("  try {\n");
    1.49 +            w.write("    locked = true;\n");
    1.50 +            w.write("    return " + e.getEnclosingElement().getSimpleName() + '.' + e.getSimpleName() + "(");
    1.51 +            String sep = "";
    1.52 +            for (int i = 1; i <= arg; i++) {
    1.53 +                w.write(sep);
    1.54 +                w.write("arg" + i);
    1.55 +                sep = ", ";
    1.56 +            }
    1.57              w.write(");\n");
    1.58 +            w.write("  } finally {\n");
    1.59 +            w.write("    locked = false;\n");
    1.60 +            w.write("  }\n");
    1.61              w.write("}\n");
    1.62              
    1.63              props.add(e.getSimpleName().toString());