boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java
branchUniversalKO
changeset 446 6dce58c06f58
parent 430 080b60863878
child 459 fe9813565c54
     1.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java	Wed Jan 08 12:58:45 2014 +0100
     1.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java	Thu Jan 09 20:39:23 2014 +0100
     1.3 @@ -298,13 +298,26 @@
     1.4                  }
     1.5                  
     1.6                  int cnt = 0;
     1.7 +                StringBuilder convert = new StringBuilder();
     1.8                  for (VariableElement ve : m.getParameters()) {
     1.9                      source.append(sep);
    1.10 -                    source.append(ve.asType());
    1.11 -                    source.append(" arg").append(++cnt);
    1.12 +                    ++cnt;
    1.13 +                    final TypeMirror t = ve.asType();
    1.14 +                    if (!t.getKind().isPrimitive()) {
    1.15 +                        source.append("Object");
    1.16 +                        convert.append("    if (p instanceof org.apidesign.html.boot.spi.Fn.FromJavaScript) {\n");
    1.17 +                        convert.append("      arg").append(cnt).
    1.18 +                            append(" = ((org.apidesign.html.boot.spi.Fn.FromJavaScript)p).toJava(arg").append(cnt).
    1.19 +                            append(");\n");
    1.20 +                        convert.append("    }\n");
    1.21 +                    } else {
    1.22 +                        source.append(t);
    1.23 +                    }
    1.24 +                    source.append(" arg").append(cnt);
    1.25                      sep = ", ";
    1.26                  }
    1.27                  source.append(") throws Throwable {\n");
    1.28 +                source.append(convert);
    1.29                  if (processingEnv.getSourceVersion().compareTo(SourceVersion.RELEASE_7) >= 0) {
    1.30                      source.append("    try (java.io.Closeable a = org.apidesign.html.boot.spi.Fn.activate(p)) { \n");
    1.31                  } else {
    1.32 @@ -326,7 +339,8 @@
    1.33                  sep = "";
    1.34                  for (VariableElement ve : m.getParameters()) {
    1.35                      source.append(sep);
    1.36 -                    source.append("arg").append(++cnt);
    1.37 +                    source.append("(").append(ve.asType());
    1.38 +                    source.append(")arg").append(++cnt);
    1.39                      sep = ", ";
    1.40                  }
    1.41                  source.append(");\n");