com.google.web.bindery.requestfactory.shared.gquery.PromiseRF Maven / Gradle / Ivy
/*
* Copyright 2013, The gwtquery team.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.web.bindery.requestfactory.shared.gquery;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.validation.ConstraintViolation;
import com.google.gwt.query.client.plugins.deferred.Deferred;
import com.google.gwt.query.client.plugins.deferred.Deferred.DeferredPromiseImpl;
import com.google.web.bindery.requestfactory.shared.Receiver;
import com.google.web.bindery.requestfactory.shared.Request;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.ServerFailure;
/**
* Utility class used to create promises for RequestFactory services.
*
* Request req1 = loginFact.api().login(null, null);
* Request req2 = srvFact.api().getCurrentUser();
*
* // We can use `when` to append different requests
* Promise requestingAll = Deferred.when(new PromiseRF(req1), new PromiseRF(req2);
* // Or we can use just one promise for multiple RF requests
* Promise requestingAll = new PromiseRF(req1, req2);
*
* requestingAll.done(new Function() {
* public void f() {
* SessionProxy session = arguments(0, 0);
* UserProxy user = arguments(1, 0);
* }
* })
* .fail(new Function() {
* public void f() {
* ServerFailure failure = arguments(0);
* }
* });
*
*/
public class PromiseRF extends DeferredPromiseImpl {
private int total = 0;
private List