1.1 --- a/boot/src/main/java/org/apidesign/html/boot/impl/JavaScriptProcesor.java Thu Jul 11 16:33:40 2013 +0200
1.2 +++ b/boot/src/main/java/org/apidesign/html/boot/impl/JavaScriptProcesor.java Thu Jul 11 16:39:39 2013 +0200
1.3 @@ -220,6 +220,8 @@
1.4 StringBuilder source = new StringBuilder();
1.5 source.append("package ").append(pkgName).append(";\n");
1.6 source.append("final class $JsCallbacks$ {\n");
1.7 + source.append(" public static final $JsCallbacks$ VM = new $JsCallbacks$();\n");
1.8 + source.append(" private $JsCallbacks$() {}\n");
1.9 for (Map.Entry<String, ExecutableElement> entry : map.entrySet()) {
1.10 final String mangled = entry.getKey();
1.11 final ExecutableElement m = entry.getValue();
2.1 --- a/boot/src/test/java/org/apidesign/html/boot/impl/JavaScriptProcesorTest.java Thu Jul 11 16:33:40 2013 +0200
2.2 +++ b/boot/src/test/java/org/apidesign/html/boot/impl/JavaScriptProcesorTest.java Thu Jul 11 16:39:39 2013 +0200
2.3 @@ -21,8 +21,10 @@
2.4 package org.apidesign.html.boot.impl;
2.5
2.6 import java.io.IOException;
2.7 +import java.lang.reflect.Field;
2.8 import java.lang.reflect.Method;
2.9 import static org.testng.Assert.assertEquals;
2.10 +import static org.testng.Assert.assertTrue;
2.11 import org.testng.annotations.Test;
2.12
2.13 /**
2.14 @@ -95,4 +97,11 @@
2.15 Method m = callbacksForTestPkg.getDeclaredMethod("java_lang_Runnable__run__", Runnable.class);
2.16 assertEquals(m.getReturnType(), Object.class, "All methods always return object");
2.17 }
2.18 +
2.19 + @Test public void hasInstanceField() throws Exception {
2.20 + Class<?> callbacksForTestPkg = Class.forName("org.apidesign.html.boot.impl.$JsCallbacks$");
2.21 + Field f = callbacksForTestPkg.getDeclaredField("VM");
2.22 + f.setAccessible(true);
2.23 + assertTrue(callbacksForTestPkg.isInstance(f.get(null)), "Singleton field VM");
2.24 + }
2.25 }