src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java
changeset 13 99f832e5765f
parent 12 282828609b86
child 15 65f6fdfd34b6
     1.1 --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Wed Sep 19 19:29:05 2012 +0200
     1.2 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Wed Sep 19 19:57:45 2012 +0200
     1.3 @@ -26,6 +26,7 @@
     1.4  import org.netbeans.modules.classfile.CPFieldInfo;
     1.5  import org.netbeans.modules.classfile.CPMethodInfo;
     1.6  import org.netbeans.modules.classfile.ClassFile;
     1.7 +import org.netbeans.modules.classfile.ClassName;
     1.8  import org.netbeans.modules.classfile.Code;
     1.9  import org.netbeans.modules.classfile.Method;
    1.10  import org.netbeans.modules.classfile.Parameter;
    1.11 @@ -65,9 +66,11 @@
    1.12                  compiler.generateStaticField(v);
    1.13              }
    1.14          }
    1.15 +        out.append("function java_lang_Object(){}\n"); // XXX temporary
    1.16          out.append("function java_lang_Object_consV(self){}\n"); // XXX temporary
    1.17          
    1.18 -        out.append("\nfunction ").append(jc.getName().getExternalName().replace('.', '_'));
    1.19 +        final String className = jc.getName().getExternalName().replace('.', '_');
    1.20 +        out.append("\nfunction ").append(className);
    1.21          out.append("() {");
    1.22          for (Method m : jc.getMethods()) {
    1.23              if (!m.isStatic()) {
    1.24 @@ -80,6 +83,11 @@
    1.25              }
    1.26          }
    1.27          out.append("\n}");
    1.28 +        ClassName sc = jc.getSuperClass();
    1.29 +        if (sc != null) {
    1.30 +            out.append("\n  ").append(className)
    1.31 +               .append(".prototype = new ").append(sc.getExternalName().replace('.', '_'));
    1.32 +        }
    1.33      }
    1.34      private void generateStaticMethod(Method m) throws IOException {
    1.35          out.append("\nfunction ").append(