Generates onError callback
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 07 Jul 2013 06:53:26 +0200
changeset 1742f9aed3e7244
parent 173 19f090945bd2
child 175 b43a54a789de
Generates onError callback
geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java
geo/src/test/java/net/java/html/geo/OnLocationTest.java
     1.1 --- a/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Sun Jul 07 06:45:09 2013 +0200
     1.2 +++ b/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Sun Jul 07 06:53:26 2013 +0200
     1.3 @@ -120,8 +120,19 @@
     1.4                  w.append(te.getSimpleName()).append(" instance");
     1.5              }
     1.6              w.append(") { return new ").append(className).append("(false, ").append(inst).append("); }\n");
     1.7 -            w.append("  protected void onError(Throwable t) {}\n");
     1.8 -            w.append("  protected void onLocation(net.java.html.geo.Position p) {");
     1.9 +            w.append("  protected void onError(Throwable t) {\n");
    1.10 +            if (ol.onError().isEmpty()) {
    1.11 +                w.append("    t.printStackTrace();");
    1.12 +            } else {
    1.13 +                if (isStatic) {
    1.14 +                    w.append("    ").append(te.getSimpleName()).append(".");
    1.15 +                } else {
    1.16 +                    w.append("    i.");
    1.17 +                }
    1.18 +                w.append(ol.onError()).append("(t);\n");
    1.19 +            }
    1.20 +            w.append("  }\n");
    1.21 +            w.append("  protected void onLocation(net.java.html.geo.Position p) {\n");
    1.22              if (isStatic) {
    1.23                  w.append("    ").append(te.getSimpleName()).append(".");
    1.24              } else {
     2.1 --- a/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Sun Jul 07 06:45:09 2013 +0200
     2.2 +++ b/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Sun Jul 07 06:53:26 2013 +0200
     2.3 @@ -58,10 +58,15 @@
     2.4      }
     2.5  
     2.6      int instCnt;
     2.7 -    @OnLocation void instance(Position p) {
     2.8 +    Throwable instT;
     2.9 +    @OnLocation(onError = "someError") void instance(Position p) {
    2.10          assertNotNull(p, "Some position passed in");
    2.11          instCnt++;
    2.12      }
    2.13 +    void someError(Throwable t) {
    2.14 +        instT = t;
    2.15 +        instCnt++;
    2.16 +    }
    2.17      
    2.18      @Test public void createOneTimeQueryInstance() {
    2.19          OnLocationTest t = new OnLocationTest();
    2.20 @@ -81,6 +86,14 @@
    2.21          assertEquals(t.instCnt, 1, "One callback made");
    2.22      }
    2.23  
    2.24 +    @Test public void onInstanceError() {
    2.25 +        GeoHandle h = InstanceHandle.createWatch(this);
    2.26 +        InterruptedException e = new InterruptedException();
    2.27 +        h.onError(e);
    2.28 +        assertEquals(instCnt, 1, "One callback made");
    2.29 +        assertEquals(instT, e, "The same exception passed in");
    2.30 +    }
    2.31 +
    2.32      @Test public void createRepeatableWatch() {
    2.33          OnLocationTest t = new OnLocationTest();
    2.34