Assume the class belongs to the same package if it is not yet resolvable model
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 04 Apr 2013 11:45:54 +0200
branchmodel
changeset 929b43aaf398748
parent 928 ac45e76f196e
child 930 e8916518b38d
Assume the class belongs to the same package if it is not yet resolvable
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/KnockoutTest.java
     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