Able to invoke interface methods
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 20 Sep 2012 09:29:42 +0200
changeset 1565f6fdfd34b6
parent 14 018eee22b8cf
child 16 6e8e00258234
Able to invoke interface methods
src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java
src/test/java/org/apidesign/java4browser/GetByte.java
src/test/java/org/apidesign/java4browser/Instance.java
src/test/java/org/apidesign/java4browser/InstanceSub.java
src/test/java/org/apidesign/java4browser/InstanceTest.java
     1.1 --- a/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Wed Sep 19 20:22:12 2012 +0200
     1.2 +++ b/src/main/java/org/apidesign/java4browser/ByteCodeToJavaScript.java	Thu Sep 20 09:29:42 2012 +0200
     1.3 @@ -376,6 +376,7 @@
     1.4                      i += 2;
     1.5                      break;
     1.6                  }
     1.7 +                case bc_invokeinterface:
     1.8                  case bc_invokevirtual:
     1.9                      i = invokeVirtualMethod(byteCodes, i);
    1.10                      break;
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/src/test/java/org/apidesign/java4browser/GetByte.java	Thu Sep 20 09:29:42 2012 +0200
     2.3 @@ -0,0 +1,9 @@
     2.4 +/*
     2.5 + * To change this template, choose Tools | Templates
     2.6 + * and open the template in the editor.
     2.7 + */
     2.8 +package org.apidesign.java4browser;
     2.9 +
    2.10 +public interface GetByte {
    2.11 +    public byte getByte();
    2.12 +}
     3.1 --- a/src/test/java/org/apidesign/java4browser/Instance.java	Wed Sep 19 20:22:12 2012 +0200
     3.2 +++ b/src/test/java/org/apidesign/java4browser/Instance.java	Thu Sep 20 09:29:42 2012 +0200
     3.3 @@ -49,4 +49,8 @@
     3.4          i2.setByte((byte)44);
     3.5          return i.getByte() + i2.getByte();
     3.6      }
     3.7 +    public static float interfaceBytes() {
     3.8 +        GetByte i = new InstanceSub(7, 2.2d);
     3.9 +        return i.getByte();
    3.10 +    }
    3.11  }
     4.1 --- a/src/test/java/org/apidesign/java4browser/InstanceSub.java	Wed Sep 19 20:22:12 2012 +0200
     4.2 +++ b/src/test/java/org/apidesign/java4browser/InstanceSub.java	Thu Sep 20 09:29:42 2012 +0200
     4.3 @@ -8,7 +8,7 @@
     4.4   *
     4.5   * @author Jaroslav Tulach <jtulach@netbeans.org>
     4.6   */
     4.7 -public class InstanceSub extends Instance {
     4.8 +public class InstanceSub extends Instance implements GetByte {
     4.9      public InstanceSub(int i, double d) {
    4.10          super(i, d);
    4.11      }
     5.1 --- a/src/test/java/org/apidesign/java4browser/InstanceTest.java	Wed Sep 19 20:22:12 2012 +0200
     5.2 +++ b/src/test/java/org/apidesign/java4browser/InstanceTest.java	Thu Sep 20 09:29:42 2012 +0200
     5.3 @@ -42,6 +42,13 @@
     5.4              Double.valueOf(55)
     5.5          );
     5.6      }
     5.7 +    @Test public void verifyInterfaceMethods() throws Exception {
     5.8 +        assertExec(
     5.9 +            "Retruns default value",
    5.10 +            "org_apidesign_java4browser_Instance_interfaceBytesF",
    5.11 +            Double.valueOf(31)
    5.12 +        );
    5.13 +    }
    5.14      
    5.15      private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception {
    5.16          StringBuilder sb = new StringBuilder();