package org.swellrt.api;
import org.swellrt.api.js.generic.ModelJS;
import com.google.gwt.core.client.JavaScriptObject;
public class ServiceCallback extends JavaScriptObject {
public static class JavaScriptResponse extends JavaScriptObject {
public static native JavaScriptResponse error(String code, String cause) /*-{
var r = new Object();
r.error = code;
r.cause = cause;
return r;
}-*/;
public static native JavaScriptResponse success(String json) /*-{
var r = new Object();
try {
r.data = JSON.parse(json);
} catch (e) {};
if (!r.data)
r.error = json;
return r;
}-*/;
public static native JavaScriptResponse success(ModelJS cObject) /*-{
return cObject;
}-*/;
public static native JavaScriptResponse error(String json) /*-{
var r;
try {
r = JSON.parse(json);
} catch (e) {};
if (!r)
r = { error : json };
return r;
}-*/;
public final native String getValue(String field) /*-{
return this.data[field];
}-*/;
public final native boolean getBoolean(String field) /*-{
return this.data[field];
}-*/;
protected JavaScriptResponse() {}
}
private static ServiceCallback VOID_SERVICE_CALLBACK = null;
private static native ServiceCallback createVoidCallback() /*-{
var callback = function(x) {
console.log("Default callback invoked. Did you forget a callback argument?");
};
return callback;
}-*/;
public static ServiceCallback getVoidCallback() {
if (VOID_SERVICE_CALLBACK == null)
VOID_SERVICE_CALLBACK = createVoidCallback();
return VOID_SERVICE_CALLBACK;
}
protected ServiceCallback() {
}
public final native void onComplete(JavaScriptResponse response) /*-{
this(response);
}-*/;
}