package com.asayama.gwt.angular.client.q;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.gwt.core.client.JavaScriptObject;
public class Deferred<V> extends JavaScriptObject {
private static final String CLASS = Deferred.class.getName();
private static final Logger LOG = Logger.getLogger(CLASS);
protected Deferred() {
}
public final void resolve(V value) {
try {
_resolve(HostedModeEnvelope.wrap(value));
} catch (Exception e) {
LOG.log(Level.WARNING, "Exception while resolving a value, value=" + value, e);
}
}
public final void reject(Throwable reason) {
try {
_reject(HostedModeEnvelope.wrap(reason));
} catch (Exception e) {
LOG.log(Level.WARNING, "Exception while rejecting a value", e);
}
}
public final void progress(Progress progress) {
try {
_progress(HostedModeEnvelope.wrap(progress));
} catch (Exception e) {
LOG.log(Level.WARNING, "Exception while notifying progress", e);
}
}
public final native Promise<V> promise() /*-{
return this.promise;
}-*/;
private final native void _resolve(HostedModeEnvelope<V> value) /*-{
this.resolve(value);
}-*/;
private final native void _reject(HostedModeEnvelope<Throwable> value) /*-{
this.reject(value);
}-*/;
private final native void _progress(HostedModeEnvelope<Progress> value) /*-{
this.notify(value);
}-*/;
}