1.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java Fri Jan 15 11:41:37 2016 +0100
1.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java Fri Jan 15 13:05:42 2016 +0100
1.3 @@ -75,6 +75,7 @@
1.4 import javax.lang.model.type.ExecutableType;
1.5 import javax.lang.model.type.TypeKind;
1.6 import javax.lang.model.type.TypeMirror;
1.7 +import javax.lang.model.util.Types;
1.8 import javax.tools.Diagnostic;
1.9 import javax.tools.FileObject;
1.10 import javax.tools.StandardLocation;
1.11 @@ -301,7 +302,8 @@
1.12 tm = ((ArrayType)tm).getComponentType();
1.13 }
1.14 sb.append('L');
1.15 - Element elm = processingEnv.getTypeUtils().asElement(tm);
1.16 + Types tu = processingEnv.getTypeUtils();
1.17 + Element elm = tu.asElement(tu.erasure(tm));
1.18 dumpElems(sb, elm, ';');
1.19 }
1.20 }
1.21 @@ -413,7 +415,7 @@
1.22 return;
1.23 }
1.24 final TypeElement selfType = (TypeElement)m.getEnclosingElement();
1.25 -
1.26 + Types tu = processingEnv.getTypeUtils();
1.27
1.28 source.append("\n public java.lang.Object ")
1.29 .append(mangled)
1.30 @@ -483,7 +485,7 @@
1.31 sep = "";
1.32 for (VariableElement ve : m.getParameters()) {
1.33 source.append(sep);
1.34 - source.append("(").append(ve.asType());
1.35 + source.append("(").append(tu.erasure(ve.asType()));
1.36 source.append(")arg").append(++cnt);
1.37 sep = ", ";
1.38 }
2.1 --- a/boot/src/test/java/org/netbeans/html/boot/impl/JsClassLoaderBase.java Fri Jan 15 11:41:37 2016 +0100
2.2 +++ b/boot/src/test/java/org/netbeans/html/boot/impl/JsClassLoaderBase.java Fri Jan 15 13:05:42 2016 +0100
2.3 @@ -46,6 +46,8 @@
2.4 import java.lang.reflect.InvocationTargetException;
2.5 import java.lang.reflect.Method;
2.6 import java.lang.reflect.Modifier;
2.7 +import java.util.HashMap;
2.8 +import java.util.Map;
2.9 import org.netbeans.html.boot.spi.Fn;
2.10 import org.testng.Assert;
2.11 import static org.testng.Assert.*;
2.12 @@ -244,6 +246,13 @@
2.13 assertEquals(res.length, 1, "One element");
2.14 assertEquals(res[0], "Ahoj", "The right string");
2.15 }
2.16 +
2.17 + @Test public void parametricCallback() throws Throwable {
2.18 + Map<String,Integer> map = new HashMap<String, Integer>();
2.19 + Method st = methodClass.getMethod("callParamTypes", Map.class, int.class);
2.20 + st.invoke(null, map, 42);
2.21 + assertEquals(map.get("key"), Integer.valueOf(42), "The right value");
2.22 + }
2.23
2.24 @Test public void checkTheTypeOfThrownException() throws Throwable {
2.25 FnContext.currentPresenter(null);
3.1 --- a/boot/src/test/java/org/netbeans/html/boot/impl/JsMethods.java Fri Jan 15 11:41:37 2016 +0100
3.2 +++ b/boot/src/test/java/org/netbeans/html/boot/impl/JsMethods.java Fri Jan 15 13:05:42 2016 +0100
3.3 @@ -42,6 +42,7 @@
3.4 */
3.5 package org.netbeans.html.boot.impl;
3.6
3.7 +import java.util.Map;
3.8 import net.java.html.js.JavaScriptBody;
3.9 import net.java.html.js.JavaScriptResource;
3.10
3.11 @@ -140,8 +141,14 @@
3.12
3.13 @JavaScriptBody(args = { "x" }, keepAlive = false, body = "throw 'Do not call me!'")
3.14 public static native int checkAllowGC(java.lang.Object x);
3.15 +
3.16 + @JavaScriptBody(args = { "map", "value" }, javacall = true, body =
3.17 + "map.@java.util.Map::put(Ljava/lang/Object;Ljava/lang/Object;)('key',value);"
3.18 + )
3.19 + public static native void callParamTypes(Map<String,Integer> map, int value);
3.20
3.21 enum Enm {
3.22 A, B;
3.23 }
3.24 }
3.25 +