package com.asayama.gwt.angular.client.q; import com.asayama.gwt.angular.client.Injector; import com.asayama.gwt.angular.client.Service; import com.asayama.gwt.jsni.client.JSArray; import com.google.gwt.core.client.JavaScriptObject; public class Q implements Service { @Injector.Inject private NGQ ngo; public <V> Deferred<V> defer() { return ngo.defer().cast(); } public Promise<JSArray<?>> all(Promise<?>... promises) { return ngo.all(JSArray.create(promises)); } } @Injector.Bind("$q") class NGQ extends JavaScriptObject { protected NGQ() { } final native Deferred<?> defer() /*-{ return this.defer(); }-*/; final native Promise<JSArray<?>> all(JSArray<Promise<?>> jsarray) /*-{ return this.all(jsarray); }-*/; }