json/src/main/java/org/apidesign/html/json/spi/Proto.java
branchosgi
changeset 386 2fc4100fcd32
parent 385 68012e8398a8
child 387 972a38bebd50
     1.1 --- a/json/src/main/java/org/apidesign/html/json/spi/Proto.java	Thu Dec 26 22:42:01 2013 +0100
     1.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/Proto.java	Fri Jan 03 08:16:39 2014 +0100
     1.3 @@ -48,6 +48,8 @@
     1.4  import org.netbeans.html.json.impl.Bindings;
     1.5  import org.netbeans.html.json.impl.JSON;
     1.6  import org.netbeans.html.json.impl.JSONList;
     1.7 +import org.netbeans.html.json.impl.RcvrJSON;
     1.8 +import org.netbeans.html.json.impl.RcvrJSON.MsgEvnt;
     1.9  
    1.10  /**
    1.11   *
    1.12 @@ -149,6 +151,24 @@
    1.13          type.onChange(obj, index);
    1.14      }
    1.15  
    1.16 +    public void loadJSON(final int index, 
    1.17 +        String urlBefore, String urlAfter, String method,
    1.18 +        final Object data
    1.19 +    ) {
    1.20 +        class Rcvr extends RcvrJSON {
    1.21 +            @Override
    1.22 +            protected void onMessage(MsgEvnt msg) {
    1.23 +                type.onMessage(obj, index, 1, msg.getValues());
    1.24 +            }
    1.25 +
    1.26 +            @Override
    1.27 +            protected void onError(MsgEvnt msg) {
    1.28 +                type.onMessage(obj, index, 2, msg.getException());
    1.29 +            }
    1.30 +        }
    1.31 +        JSON.loadJSON(context, new Rcvr(), urlBefore, urlAfter, method, data);
    1.32 +    }
    1.33 +    
    1.34      public String toString(Object data, String propName) {
    1.35          return JSON.toString(context, data, propName);
    1.36      }
    1.37 @@ -177,7 +197,7 @@
    1.38              }
    1.39          }
    1.40      }
    1.41 -    
    1.42 +
    1.43      /** Functionality used by the code generated by annotation
    1.44       * processor for the {@link net.java.html.json.Model} annotation.
    1.45       * 
    1.46 @@ -225,6 +245,21 @@
    1.47          public abstract Model read(BrwsrCtx c, Object json);
    1.48          public abstract void onChange(Model model, int index);
    1.49          public abstract Proto protoFor(Object object);
    1.50 +
    1.51 +        /**
    1.52 +         * 
    1.53 +         * @param model
    1.54 +         * @param index
    1.55 +         * @param type 0 - onOpen, 1 - onMessage, 2 - onError, 3 - onClose
    1.56 +         * @param data 
    1.57 +         */
    1.58 +        public abstract void onMessage(Model model, int index, int type, Object data);
    1.59 +
    1.60 +        public <T> void copyJSON(BrwsrCtx context, Object[] src, Class<T> destType, T[] dest) {
    1.61 +            for (int i = 0; i < src.length && i < dest.length; i++) {
    1.62 +                dest[i] = org.netbeans.html.json.impl.JSON.read(context, destType, src[i]);
    1.63 +            }
    1.64 +        }
    1.65          
    1.66          //
    1.67          // Various support methods the generated classes use