Generates meaningful onLocation method
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 07 Jul 2013 06:45:09 +0200
changeset 17319f090945bd2
parent 172 a058550f8f1f
child 174 2f9aed3e7244
Generates meaningful onLocation method
geo/src/main/java/net/java/html/geo/Position.java
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/net/java/html/geo/Position.java	Sat Jul 06 08:09:53 2013 +0200
     1.2 +++ b/geo/src/main/java/net/java/html/geo/Position.java	Sun Jul 07 06:45:09 2013 +0200
     1.3 @@ -25,7 +25,7 @@
     1.4   * @author Jaroslav Tulach <jtulach@netbeans.org>
     1.5   */
     1.6  public final class Position {
     1.7 -    private Position() {
     1.8 +    Position() {
     1.9      }
    1.10  
    1.11      public Coordinates getCoords() {
     2.1 --- a/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Sat Jul 06 08:09:53 2013 +0200
     2.2 +++ b/geo/src/main/java/org/apidesign/html/geo/impl/GeoProcessor.java	Sun Jul 07 06:45:09 2013 +0200
     2.3 @@ -121,7 +121,14 @@
     2.4              }
     2.5              w.append(") { return new ").append(className).append("(false, ").append(inst).append("); }\n");
     2.6              w.append("  protected void onError(Throwable t) {}\n");
     2.7 -            w.append("  protected void onLocation(net.java.html.geo.Position p) {}\n");
     2.8 +            w.append("  protected void onLocation(net.java.html.geo.Position p) {");
     2.9 +            if (isStatic) {
    2.10 +                w.append("    ").append(te.getSimpleName()).append(".");
    2.11 +            } else {
    2.12 +                w.append("    i.");
    2.13 +            }
    2.14 +            w.append(me.getSimpleName()).append("(p);\n");
    2.15 +            w.append("  }\n");
    2.16              w.append("}\n");
    2.17              w.close();
    2.18          } catch (IOException ex) {
     3.1 --- a/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Sat Jul 06 08:09:53 2013 +0200
     3.2 +++ b/geo/src/test/java/net/java/html/geo/OnLocationTest.java	Sun Jul 07 06:45:09 2013 +0200
     3.3 @@ -21,12 +21,15 @@
     3.4  package net.java.html.geo;
     3.5  
     3.6  import org.testng.annotations.Test;
     3.7 +import static org.testng.Assert.*;
     3.8  
     3.9 -/**
    3.10 +/** Testing correctness of the generated code.
    3.11   */
    3.12  public class OnLocationTest {
    3.13 -    
    3.14 +    static int cnt;
    3.15      static @OnLocation void onLocation(Position p) {
    3.16 +        assertNotNull(p, "Position object provided");
    3.17 +        cnt++;
    3.18      }
    3.19  
    3.20      @Test public void createOneTimeQueryStatic() {
    3.21 @@ -37,6 +40,13 @@
    3.22          h.start();
    3.23          h.stop();
    3.24      }
    3.25 +    
    3.26 +    @Test public void onLocationHandleCallback() {
    3.27 +        GeoHandle h = OnLocationHandle.createQuery();
    3.28 +        cnt = 0;
    3.29 +        h.onLocation(new Position());
    3.30 +        assertEquals(cnt, 1, "The callback has been made");
    3.31 +    }
    3.32  
    3.33      @Test public void createRepeatableWatchStatic() {
    3.34          GeoHandle h = OnLocationHandle.createQuery();
    3.35 @@ -46,8 +56,11 @@
    3.36          h.start();
    3.37          h.stop();
    3.38      }
    3.39 -    
    3.40 +
    3.41 +    int instCnt;
    3.42      @OnLocation void instance(Position p) {
    3.43 +        assertNotNull(p, "Some position passed in");
    3.44 +        instCnt++;
    3.45      }
    3.46      
    3.47      @Test public void createOneTimeQueryInstance() {
    3.48 @@ -60,6 +73,13 @@
    3.49          h.start();
    3.50          h.stop();
    3.51      }
    3.52 +    
    3.53 +    @Test public void onInstanceCallback() {
    3.54 +        OnLocationTest t = new OnLocationTest();
    3.55 +        GeoHandle h = InstanceHandle.createWatch(t);
    3.56 +        h.onLocation(new Position());
    3.57 +        assertEquals(t.instCnt, 1, "One callback made");
    3.58 +    }
    3.59  
    3.60      @Test public void createRepeatableWatch() {
    3.61          OnLocationTest t = new OnLocationTest();