1.1 --- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sun Dec 13 21:33:32 2015 +0100
1.2 +++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Thu Dec 31 08:20:05 2015 +0100
1.3 @@ -292,7 +292,7 @@
1.4 boolean isPrimitive[] = {false};
1.5 String tn = checkType(p, isModel, isEnum, isPrimitive);
1.6 if (isModel[0]) {
1.7 - w.write(" prop_" + p.name() + " = new " + tn + "();\n");
1.8 + w.write(" prop_" + p.name() + " = this;\n");
1.9 }
1.10 }
1.11 }
1.12 @@ -658,10 +658,18 @@
1.13 boolean isEnum[] = { false };
1.14 boolean isPrimitive[] = { false };
1.15 checkType(p, isModel, isEnum, isPrimitive);
1.16 - w.write(" private " + tn + " prop_" + p.name() + ";\n");
1.17 + if (isModel[0]) {
1.18 + w.write(" private /*" + tn + "*/Object prop_" + p.name() + ";\n");
1.19 +
1.20 + } else {
1.21 + w.write(" private " + tn + " prop_" + p.name() + ";\n");
1.22 + }
1.23 w.write(" public " + tn + " " + gs[0] + "() {\n");
1.24 w.write(" proto.accessProperty(\"" + p.name() + "\");\n");
1.25 - w.write(" return prop_" + p.name() + ";\n");
1.26 + if (isModel[0]) {
1.27 + w.write(" if (prop_" + p.name() + " == this) prop_" + p.name() + " = new " + tn +"();\n");
1.28 + }
1.29 + w.write(" return (" + tn + ")prop_" + p.name() + ";\n");
1.30 w.write(" }\n");
1.31 w.write(" public void " + gs[1] + "(" + tn + " v) {\n");
1.32 w.write(" proto.verifyUnlocked();\n");
1.33 @@ -1712,7 +1720,7 @@
1.34 w.write(" ret.prop_" + p.name() + " = " + gs[0] + "();\n");
1.35 continue;
1.36 }
1.37 - w.write(" ret.prop_" + p.name() + " = " + gs[0] + "() == null ? null : prop_" + p.name() + ".clone();\n");
1.38 + w.write(" ret.prop_" + p.name() + " = " + gs[0] + "() == null ? null : " + gs[0] + "().clone();\n");
1.39 } else {
1.40 w.write(" proto.cloneList(ret." + gs[0] + "(), ctx, prop_" + p.name() + ");\n");
1.41 }