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