1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 04 09:47:35 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 04 11:45:54 2013 +0200
1.3 @@ -48,6 +48,7 @@
1.4 import javax.lang.model.type.MirroredTypeException;
1.5 import javax.lang.model.type.TypeKind;
1.6 import javax.lang.model.type.TypeMirror;
1.7 +import javax.lang.model.util.Elements;
1.8 import javax.lang.model.util.Types;
1.9 import javax.tools.Diagnostic;
1.10 import javax.tools.FileObject;
1.11 @@ -451,7 +452,7 @@
1.12 final TypeMirror rt = ee.getReturnType();
1.13 final Types tu = processingEnv.getTypeUtils();
1.14 TypeMirror ert = tu.erasure(rt);
1.15 - String tn = ert.toString();
1.16 + String tn = fqn(ert, ee);
1.17 boolean array = false;
1.18 if (tn.equals("java.util.List")) {
1.19 array = true;
1.20 @@ -470,7 +471,7 @@
1.21 ok = false;
1.22 }
1.23
1.24 - final String dt = pe.asType().toString();
1.25 + final String dt = fqn(pe.asType(), ee);
1.26 String[] call = toGetSet(dn, dt, false);
1.27 w.write(" " + dt + " arg" + (++arg) + " = ");
1.28 w.write(call[0] + "();\n");
1.29 @@ -721,7 +722,7 @@
1.30 params.append(")");
1.31 continue;
1.32 }
1.33 - String rn = ve.asType().toString();
1.34 + String rn = fqn(ve.asType(), ee);
1.35 int last = rn.lastIndexOf('.');
1.36 if (last >= 0) {
1.37 rn = rn.substring(last + 1);
1.38 @@ -799,4 +800,13 @@
1.39 }
1.40 return sb.toString();
1.41 }
1.42 +
1.43 + private String fqn(TypeMirror pt, Element relative) {
1.44 + if (pt.getKind() == TypeKind.ERROR) {
1.45 + final Elements eu = processingEnv.getElementUtils();
1.46 + PackageElement pckg = eu.getPackageOf(relative);
1.47 + return pckg.getQualifiedName() + "." + pt.toString();
1.48 + }
1.49 + return pt.toString();
1.50 + }
1.51 }
2.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Thu Apr 04 09:47:35 2013 +0200
2.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Thu Apr 04 11:45:54 2013 +0200
2.3 @@ -139,28 +139,46 @@
2.4 assert "changed".equals(txt) : "Expecting 'changed': " + txt;
2.5 }
2.6
2.7 + @ComputedProperty
2.8 + static Person firstPerson(List<Person> people) {
2.9 + return people.isEmpty() ? null : people.get(0);
2.10 + }
2.11 +
2.12 + @HtmlFragment(
2.13 + "<p id='ul' data-bind='with: firstPerson'>\n"
2.14 + + " <span data-bind='text: firstName, click: changeSex'></span>\n"
2.15 + + "</p>\n"
2.16 + )
2.17 + @BrwsrTest public void accessFirstPersonWithOnFunction() {
2.18 + trasfertToFemale();
2.19 + }
2.20 +
2.21 @HtmlFragment(
2.22 "<ul id='ul' data-bind='foreach: people'>\n"
2.23 + " <li data-bind='text: $data.firstName, click: changeSex'></li>\n"
2.24 + "</ul>\n"
2.25 )
2.26 @BrwsrTest public void onPersonFunction() {
2.27 + trasfertToFemale();
2.28 + }
2.29 +
2.30 + private void trasfertToFemale() {
2.31 KnockoutModel m = new KnockoutModel();
2.32 -
2.33 +
2.34 final Person first = new Person();
2.35 first.setFirstName("first");
2.36 first.setSex(Sex.MALE);
2.37 m.getPeople().add(first);
2.38 -
2.39 -
2.40 +
2.41 +
2.42 m.applyBindings();
2.43 -
2.44 +
2.45 int cnt = countChildren("ul");
2.46 assert cnt == 1 : "One child, but was " + cnt;
2.47 -
2.48 -
2.49 +
2.50 +
2.51 triggerChildClick("ul", 0);
2.52 -
2.53 +
2.54 assert first.getSex() == Sex.FEMALE : "Transverted to female: " + first.getSex();
2.55 }
2.56