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