package com.asayama.gwt.angular.client.http;
import com.asayama.gwt.angular.client.Injector;
import com.asayama.gwt.angular.client.Service;
import com.asayama.gwt.jsni.client.Closure;
import com.asayama.gwt.jsni.client.JSClosure;
import com.google.gwt.core.client.JavaScriptObject;
/**
* <h1>This class does not work!</h1> I get the following error when unit
* testing.
*
* <pre>
* Error: [$rootScope:inprog] $digest already in progress
* http://errors.angularjs.org/1.2.9/$rootScope/inprog?p0=%24digest
* </pre>
*
* Consider using a GWT's RequestBuilder based API provided in
* com.asayama.gwt.angular.http.AngularHttp.
*
* @author kyoken74
*/
public class Http implements Service {
@Injector.Inject
private NGHttp ngo;
public void get(String url, final HttpCallback callback) {
ngo.get(url, JSClosure.create(new Closure() {
@Override
public void exec(Object... args) {
String data = (String) args[0];
int status = (Integer) args[1];
callback.onSuccess(status, data);
}
}), JSClosure.create(new Closure() {
@Override
public void exec(Object... args) {
String data = (String) args[0];
int status = (Integer) args[1];
callback.onSuccess(status, data);
}
}));
}
}
@Injector.Bind("$http")
class NGHttp extends JavaScriptObject {
protected NGHttp() {
}
final native void get(String url, JSClosure successCallback, JSClosure errorCallback) /*-{
this.get(url).success(successCallback).error(errorCallback);
}-*/;
}