# HG changeset patch # User Jaroslav Tulach # Date 1365068754 -7200 # Node ID b43aaf398748ed20c0b1266b9c50b024bd854303 # Parent ac45e76f196e39ce0a0b0833a8a0e6415b904aad Assume the class belongs to the same package if it is not yet resolvable diff -r ac45e76f196e -r b43aaf398748 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 04 09:47:35 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 04 11:45:54 2013 +0200 @@ -48,6 +48,7 @@ import javax.lang.model.type.MirroredTypeException; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; +import javax.lang.model.util.Elements; import javax.lang.model.util.Types; import javax.tools.Diagnostic; import javax.tools.FileObject; @@ -451,7 +452,7 @@ final TypeMirror rt = ee.getReturnType(); final Types tu = processingEnv.getTypeUtils(); TypeMirror ert = tu.erasure(rt); - String tn = ert.toString(); + String tn = fqn(ert, ee); boolean array = false; if (tn.equals("java.util.List")) { array = true; @@ -470,7 +471,7 @@ ok = false; } - final String dt = pe.asType().toString(); + final String dt = fqn(pe.asType(), ee); String[] call = toGetSet(dn, dt, false); w.write(" " + dt + " arg" + (++arg) + " = "); w.write(call[0] + "();\n"); @@ -721,7 +722,7 @@ params.append(")"); continue; } - String rn = ve.asType().toString(); + String rn = fqn(ve.asType(), ee); int last = rn.lastIndexOf('.'); if (last >= 0) { rn = rn.substring(last + 1); @@ -799,4 +800,13 @@ } return sb.toString(); } + + private String fqn(TypeMirror pt, Element relative) { + if (pt.getKind() == TypeKind.ERROR) { + final Elements eu = processingEnv.getElementUtils(); + PackageElement pckg = eu.getPackageOf(relative); + return pckg.getQualifiedName() + "." + pt.toString(); + } + return pt.toString(); + } } diff -r ac45e76f196e -r b43aaf398748 javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Thu Apr 04 09:47:35 2013 +0200 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java Thu Apr 04 11:45:54 2013 +0200 @@ -139,28 +139,46 @@ assert "changed".equals(txt) : "Expecting 'changed': " + txt; } + @ComputedProperty + static Person firstPerson(List people) { + return people.isEmpty() ? null : people.get(0); + } + + @HtmlFragment( + "

\n" + + " \n" + + "

\n" + ) + @BrwsrTest public void accessFirstPersonWithOnFunction() { + trasfertToFemale(); + } + @HtmlFragment( "\n" ) @BrwsrTest public void onPersonFunction() { + trasfertToFemale(); + } + + private void trasfertToFemale() { KnockoutModel m = new KnockoutModel(); - + final Person first = new Person(); first.setFirstName("first"); first.setSex(Sex.MALE); m.getPeople().add(first); - - + + m.applyBindings(); - + int cnt = countChildren("ul"); assert cnt == 1 : "One child, but was " + cnt; - - + + triggerChildClick("ul", 0); - + assert first.getSex() == Sex.FEMALE : "Transverted to female: " + first.getSex(); }